﻿// EXP0231.cpp : 
//const int v2 = 0; int v1 = v2;
//int* p1 = &v1, & r1 = v1;
//const int* p2 = &v2, * const p3 = &i, & r2 = v2;

// 假设已有上一个练习中所做的那些声明，则下面的哪些语句是合法的？请说明顶层const和底层const在每个例子中有何体现。

//r1 = v2; // v2是常量，r1是变量的引用，拷贝赋值，合法
//p1 = p2; // p2是指向常量的指针，p1是普通指针，存在风险，不合法
//p2 = p1; // p1是普通指针，p2指向常量的指针，拷贝赋值地址，合法
//p1 = p3; // p3是指向常量的常量指针，p1是普通指针，存在风险，不合法
//p2 = p3; // p3是指向常量的常量指针，p2指向常量的指针，合法



